
package projetofinal;

/* demonstra Entrada e Saída de arquivos */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;//Entrada e Saída de Arquivos
public class DemoEntradaSaidaArquivo {

    private Frame f;
    private BorderLayout layout;
    private JTextArea jtaTexto;
    private JScrollPane jspTexto;
//construtor
    public DemoEntradaSaidaArquivo() {
//define um BorderLayout
        layout = new BorderLayout();
        f = new Frame("Entrada e Saida de Arquivo");
        f.setLayout(layout);
//JTextArea
        jtaTexto = new JTextArea();
//JScrollPane para poder rolar o texto no JTextArea
        jspTexto = new JScrollPane(jtaTexto);
//adiciona na tela, o JSPTexto criado
        f.add(jspTexto, BorderLayout.CENTER);
        JButton jbNovo = new JButton("Novo");
        jbNovo.setIcon(new ImageIcon(getClass().getResource("../imgs/icones/NEW.gif")));
        jbNovo.setToolTipText("Novo arquivo");
        jbNovo.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                jtaTexto.setText("");
            }
        });
        JButton jbAbrir = new JButton("Abrir");
        jbAbrir.setIcon(new ImageIcon(getClass().getResource("../imgs/icones/OPEN.gif")));
        jbAbrir.setToolTipText("Abre arquivo");
        jbAbrir.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                FileDialog fdAbrir =
                        new FileDialog(f, "Selecione o Arquivo", FileDialog.LOAD);
                fdAbrir.setVisible(true);
                String arquivo = fdAbrir.getDirectory() + fdAbrir.getFile();
                if (arquivo == null || arquivo.equals("")) {//clicou em cancelar
                    System.out.println("cancelou FileDialog.LOAD");
                } else {
                    try {
//classe FileReader para Ler um arquivo
                        FileReader frArq = new FileReader(arquivo);
                        BufferedReader brEntrada = new BufferedReader(frArq);
                        String linha, linhaAux;
                        linhaAux = "";
                        linha = "";
//lê linha a linha enquanto for diferente de null
//método readLine da classe BufferedReader faz a leitura de linhas
                        while ((linhaAux = brEntrada.readLine()) != null) {
                            linha += linhaAux + "\n";
                        }
//joga na tela todo o conteúdo lido
                        jtaTexto.setText(linha);
//fecha o arquivo para finalizar a leitura
                        brEntrada.close();
                    } catch (IOException erroIO) {
                        System.out.println("erro na leitura do arquivo" + arquivo);
                        System.out.println(erroIO.getMessage());
                    }
                }//fim else
            } //fim actionPerformed
        }); //fim botão jbAbrir.addActionListener
        JButton jbSalvar = new JButton("Salvar");
        jbSalvar.setIcon(new ImageIcon(getClass().getResource("../imgs/icones/SAVE.gif")));
        jbSalvar.setToolTipText("Salva arquivo");
        jbSalvar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                FileDialog fdSalvar =
                        new FileDialog(f, "Selecione o Arquivo", FileDialog.SAVE);
                fdSalvar.setVisible(true);
                String nomeArquivo = fdSalvar.getDirectory() + fdSalvar.getFile();
                if ((nomeArquivo == null) || (nomeArquivo.equals(""))) {
//clicou em cancelar
                    System.out.println("cancelou FileDialog.SAVE");
                } else {
                    try {
//classe File referencia um arquivo real em disco
                        File fileArquivo = new File(nomeArquivo);
//prepara o arquivo para poder Escrever
                        FileWriter frArquivo = new FileWriter(fileArquivo);
                        PrintWriter pwSaida = new PrintWriter(frArquivo);//escreve no arquivo o conteúdo que está na tela
                        pwSaida.println(jtaTexto.getText());
//fecha arquivo
                        pwSaida.close();
                    } catch (IOException erroIO) {
                        System.out.println("erro gravação do arquivo:" + nomeArquivo);
                        System.out.println(erroIO.getMessage());
                    }
                } //fim else
            } //fim actionPerformed
        }); //fim jbSalvar.addActionListener
        JButton jbSair = new JButton("Sair");
        jbSair.setIcon(new ImageIcon(getClass().getResource("../imgs/icones/CLOSE.gif")));
        jbSair.setToolTipText("Sai da Tela");
        jbSair.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                f.setVisible(false);//sai escondendo a tela
            }
        });
//define o Painel Sul, onde conterá os botões
        JPanel jpPainelSul = new JPanel();
        jpPainelSul.setLayout(new GridLayout(1, 4));//4 botões
        jpPainelSul.add(jbNovo);
        jpPainelSul.add(jbAbrir);
        jpPainelSul.add(jbSalvar);
        jpPainelSul.add(jbSair);
        f.add(jpPainelSul, BorderLayout.SOUTH);
//adiciona tratador para fechar a janela
        f.addWindowListener(
                new WindowAdapter() {

                    public void windowClosing(WindowEvent e) {
                        f.dispose();//sai da tela liberando os recursos
                    }
                });//fim do addWindowListener
        f.setSize(500, 300);
        f.setVisible(true);
    } //fim construtor
}//fim da class